import Vue from 'vue'
import Vuex from 'vuex'

// 导入模块
import user from './modules/user'
import setting from './modules/setting'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {

        count: 1,
        age: 19,
        list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    },
    mutations: {
        // state数据的修改只能通过mutations， 并且mutations必须是同步的
        changeHandel(state, obj) {
            state.count += obj.n

        },
        changeHandel2(state, m) {
            state.count += m

        }
    },
    actions: {
        //actions则负责进行异步操作
        // 需求: 一秒钟之后, 要给一个数 去修改state
        asyncHandel({ commit }, obj) {
            setTimeout(() => {
                console.log(commit);
                commit('changeHandel2', obj.m)
            }, 1000)
        }

    },
    getters: {
        //类似于computed,，使用方法同state
        //getters函数的第一个参数是 state
        total(state) {
            return state.list.reduce((sum, item) => sum + item, 0)
        }

    },
    modules: {
        /* 模块名:导入的模块 */
        user,
        setting
        /* 获取模块中的数据公式  this.$store.state.模块名.找数据 */

    }
})